package com.wangsong.common.util;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import com.wangsong.common.model.JsonTreeData;

public class TreeNodeUtil {

    public final static List<JsonTreeData> getfatherNode(List<JsonTreeData> treeDataList) {
        List<JsonTreeData> newTreeDataList =treeDataList.stream()
                .filter(jsonTreeData->jsonTreeData.getPid().equals(0L))
                .map(jsonTreeData->jsonTreeDataOpen(jsonTreeData,treeDataList))
                .collect(Collectors.toList());
        return newTreeDataList;
    }

    private static JsonTreeData jsonTreeDataOpen(JsonTreeData jsonTreeData,List<JsonTreeData> treeDataList){
        //获取父节点下的子节点
        jsonTreeData.setChildren(getChildrenNode(jsonTreeData.getId(), treeDataList));
        jsonTreeData.setState("open");
        return jsonTreeData;
    }

    private final static List<JsonTreeData> getChildrenNode(Long pid, List<JsonTreeData> treeDataList) {

        List<JsonTreeData> newTreeDataList = treeDataList.stream()
                .filter(jsonTreeData->jsonTreeData.getPid() != null)
                .filter(jsonTreeData->jsonTreeData.getPid().equals(pid))
                .map(    jsonTreeData->jsonTreeData(jsonTreeData,treeDataList))

                .collect(Collectors.toList());
        return newTreeDataList;
    }
    private static JsonTreeData jsonTreeData(JsonTreeData jsonTreeData,List<JsonTreeData> treeDataList) {
        jsonTreeData.setChildren(getChildrenNode(jsonTreeData.getId(), treeDataList));
        return jsonTreeData;
    }
}